//-----------------------------------------------------------------------------
// Bend2D - Physics Engine
// Roberto Bender <beto.bender@gmail.com>
// Description: 
// Date: 08/03/2010
//-----------------------------------------------------------------------------
#ifndef ANGLE_H
#define ANGLE_H

namespace bend2d
{
	class Angle
	{
	public:
		enum AngleRepresentation { eAngleDegree, eAngleRad, eAngleDegreePos };
        enum AngleOrigin { eAngleAbsolute, eAngleRelative };
		Angle();
		Angle(double angle, AngleRepresentation input = eAngleDegree);
		double GetAngle(AngleRepresentation output = eAngleDegree) const;
        void Rotate(const Angle& angle, AngleOrigin origin = eAngleRelative);
		Angle Rotate(const Angle& angle, AngleOrigin origin = eAngleRelative) const;
		Angle operator + (const Angle& angle) const;
		Angle operator - (const Angle& angle) const;
		void operator += (const Angle& angle);
		void operator -= (const Angle& angle);
	private:
		double m_Angle;
	};
}

#endif
